#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

// int main() {
//     pid_t pid = fork(); // 创建子进程

//     if (pid == 0) {
//         // 子进程代码
//         sleep(5); // 模拟子进程工作
//         exit(0); // 子进程退出
//     } else if (pid > 0) {
//         // 父进程代码
//         int status;
//         while (1) {
//             pid_t ret = waitpid(pid, &status, WNOHANG); // 非阻塞等待
//             if (ret == 0) {
//                 printf("Child process is still running, doing other work...\n");
//                 sleep(1); // 父进程继续其他工作
//             } else if (ret == pid) {
//                 printf("Child process with PID %d exited with status %d\n", ret, WEXITSTATUS(status));
//                 break;
//             } else {
//                 perror("waitpid failed");
//                 break;
//             }
//         }
//     }

//     return 0;
// }

int main() {
    const char *msg = "hello fwrite\n";
    fwrite(msg, strlen(msg), 1, stdout);
    printf("hello printf\n");
    fprintf(stdout, "hello fprintf\n");
    return 0;
    // FILE* fp = fopen("abc.txt", "w");
    // if (!fp) perror("fopen error!");
    // const char msg[10][100] = {"hello world!\n","ni hao!\n","good world!\n","eii world!\n","ciallo world!\n"};
    // size_t written = fwrite(msg, 1, sizeof(msg), fp);
    // if (written != sizeof(msg)) {
    //     perror("Error writing to file");
    // }

    // fclose(fp);
    // printf("%ld\n", sizeof(msg));
    // FILE* fp1 = fopen("abc.txt", "w");
    // if (!fp1) perror("fopen error!");
    // const char* msg = "hello world!\n";
    // int count = 5;
    // while (count--) {
    //     fwrite(msg, strlen(msg), 1, fp1);
    // }
    // fclose(fp1);

    // FILE* fp2 = fopen("abc.txt", "r");
    // if (!fp2) perror("fopen error!");
    // char ret[10][100];
    // fread(ret, 1, sizeof(msg), fp2);
    // fclose(fp2);
    // printf("%s", ret[0]);
    // printf("%s", ret[1]);
    // printf("%s", ret[2]);
    // printf("%s", ret[3]);
    // printf("%s", ret[4]);
    
    // pid_t pid = fork(); // 创建子进程

    // if (pid == 0) {
    //     // 子进程代码
    //     sleep(5); // 模拟子进程工作
    //     exit(0); // 子进程退出
    // } else if (pid > 0) {
    //     // 父进程代码
    //     int status;
    //     pid_t ret = waitpid(pid, &status, 0); // 等待指定子进程结束
    //     if (ret == -1) {
    //         perror("waitpid failed");
    //     } else {
    //         printf("Child process with PID %d exited with status %d\n", ret, WEXITSTATUS(status));
    //     }
    // }

    // char * env = getenv("MYENV");
    // if(env)
    // {
    //     printf("%s\n", env);
    // }
    //return 0;
}